{
  "guild": {
    "id": "1361349522684510449",
    "name": "wafer.space Community",
    "iconUrl": "2026-06_media/fb143eaa45770cbb40493d09b625e98b-09FD1.png"
  },
  "channel": {
    "id": "1514919594467393626",
    "type": "GuildPublicThread",
    "categoryId": "1409660288822673408",
    "category": "⁉️-questions",
    "name": "Connecting analog pin in librelane flow",
    "topic": null
  },
  "dateRange": {
    "after": "2026-05-31T23:59:59.999+00:00",
    "before": "2026-07-01T00:00:00+00:00"
  },
  "exportedAt": "2026-07-09T05:02:40.4606282+00:00",
  "messages": [
    {
      "id": "1514919594467393626",
      "type": "Default",
      "timestamp": "2026-06-12T09:09:37.166+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Last night, I thought I'd try taking @Matt Venn's R2R DAC he just submitted on TT 0p3 and add it to TinyQV.  I've got the macro in and the digital inputs + ground are connected OK (could probably do with buffers on the input, but one thing at a time).\nHowever, librelane won't route the output from the DAC to the analog pin - possibly quite sensibly as in general it probably shouldn't touch analog things.  How should I deal with making that connection?  I guess I could add it manually to the gds after the librelane flow has finished, but that seems not ideal.  Can I add a step to the flow to describe the connection?  Or can I just tell the router to connect it somehow?\nMy repo is here, see the `dac` branch: https://github.com/MichaelBell/ws02-tinyQV/tree/dac",
      "author": {
        "id": "691780627338625077",
        "name": "rebelmike",
        "discriminator": "0000",
        "nickname": "RebelMike",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
      },
      "attachments": [],
      "embeds": [
        {
          "title": "GitHub - MichaelBell/ws02-tinyQV at dac",
          "url": "https://github.com/MichaelBell/ws02-tinyQV/tree/dac",
          "timestamp": null,
          "description": "TinyQV for Wafer Space run 2 on gf180mcuD. Contribute to MichaelBell/ws02-tinyQV development by creating an account on GitHub.",
          "color": "#1E2327",
          "thumbnail": {
            "url": "2026-06_media/ws02-tinyQV-96057",
            "width": 1200,
            "height": 600
          },
          "images": [],
          "fields": [],
          "inlineEmojis": []
        }
      ],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC4D",
            "code": "thumbsup",
            "isAnimated": false,
            "imageUrl": "2026-06_media/1f44d-27259.svg"
          },
          "count": 3,
          "users": [
            {
              "id": "356185479911047169",
              "name": ".dmv",
              "discriminator": "0000",
              "nickname": "dmv",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/cf91f9947bc37b8a1071311863f9c4b7-14667.png"
            },
            {
              "id": "492702620759228416",
              "name": "mattvenn",
              "discriminator": "0000",
              "nickname": "Matt Venn",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/aa8560ba40f1f3d339d044dee6970630-97A62.png"
            },
            {
              "id": "854091366099451924",
              "name": "mikea1238",
              "discriminator": "0000",
              "nickname": "mikea",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/7f2ff01a306c951630dba44b88c2044d-9CD24.png"
            }
          ]
        }
      ],
      "mentions": [
        {
          "id": "492702620759228416",
          "name": "mattvenn",
          "discriminator": "0000",
          "nickname": "Matt Venn",
          "color": null,
          "isBot": false,
          "roles": [
            {
              "id": "1423020172595298314",
              "name": "Mod",
              "color": null,
              "position": 4
            }
          ],
          "avatarUrl": "2026-06_media/aa8560ba40f1f3d339d044dee6970630-97A62.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1514920434838278186",
      "type": "Default",
      "timestamp": "2026-06-12T09:12:57.526+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Interested to see how you solve it!",
      "author": {
        "id": "492702620759228416",
        "name": "mattvenn",
        "discriminator": "0000",
        "nickname": "Matt Venn",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/aa8560ba40f1f3d339d044dee6970630-97A62.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514920931372568767",
      "type": "Default",
      "timestamp": "2026-06-12T09:14:55.909+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "This is an issue I encountered last run as well, give me a minute to remember the fix",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514921351830569092",
      "type": "Default",
      "timestamp": "2026-06-12T09:16:36.154+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Librelane does not like that the pad’s layout does not have a port named \"PAD\". That’s it.",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514921441546600500",
      "type": "Default",
      "timestamp": "2026-06-12T09:16:57.544+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "That’s all I did. Copy the files for the analog pad and define a port named \"PAD\" in magic",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514921493803569152",
      "type": "Default",
      "timestamp": "2026-06-12T09:17:10.003+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "https://github.com/AvalonSemiconductors/ws-submission-2025/tree/main/macros/Analog/AnalogPad",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [
        {
          "title": "ws-submission-2025/macros/Analog/AnalogPad at main · AvalonSemicon...",
          "url": "https://github.com/AvalonSemiconductors/ws-submission-2025/tree/main/macros/Analog/AnalogPad",
          "timestamp": null,
          "description": "Multi-project die. Contribute to AvalonSemiconductors/ws-submission-2025 development by creating an account on GitHub.",
          "color": "#1E2327",
          "thumbnail": {
            "url": "2026-06_media/ws-submission-2025-A262E",
            "width": 1200,
            "height": 600
          },
          "images": [],
          "fields": [],
          "inlineEmojis": []
        }
      ],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC4D",
            "code": "thumbsup",
            "isAnimated": false,
            "imageUrl": "2026-06_media/1f44d-27259.svg"
          },
          "count": 1,
          "users": [
            {
              "id": "651881618373476362",
              "name": "kewenlee",
              "discriminator": "0000",
              "nickname": "kewenlee",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/3e7d21a60c5d0aa08f02cdf15b773a57-AABDE.png"
            }
          ]
        }
      ],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514921765514514543",
      "type": "Default",
      "timestamp": "2026-06-12T09:18:14.784+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Its not even different electrically. The analog pad just provides a straight connection to the outside, the ports \"ASIG5V\" and \"PAD\" are electrically shorted, but LibreLane needs \"PAD\" to exist.",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514921884645593150",
      "type": "Default",
      "timestamp": "2026-06-12T09:18:43.187+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Otherwise it goes \"whoa, this is useless!\" and optimizes it out, since all it sees is a cell with only an input and no output (I *believe*)",
      "author": {
        "id": "220639106915368960",
        "name": "tholin",
        "discriminator": "0000",
        "nickname": "Tholin",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/edae5aadf146133e0448bfb1f0fa91c4-62B19.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514922646452699259",
      "type": "Default",
      "timestamp": "2026-06-12T09:21:44.816+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "The issue is that OpenROAD's detailed router does not route any pins with the `SPECIAL` attribute. This makes sense for power supplies, as they are handled by a dedicated pdngen call.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514922755739357195",
      "type": "Default",
      "timestamp": "2026-06-12T09:22:10.872+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Here you can see that ASIG5V has SPECIAL set to True.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [
        {
          "id": "1514922755806728322",
          "url": "2026-06_media/Bildschirmfoto_vom_2026-06-12_11-20-36-2E0D6.png",
          "fileName": "Bildschirmfoto_vom_2026-06-12_11-20-36.png",
          "fileSizeBytes": 238223
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514922797451972631",
      "type": "Default",
      "timestamp": "2026-06-12T09:22:20.817+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Looking at the LEF for `gf180mcu_fd_io__asig_5p0.lef`, I don't see the `SPECIAL` attribute set for ASIG5V. However, OpenROAD probably sets it when making the bondpad a BTerm (top-level pin) with [`place_io_terminals`](https://openroad.readthedocs.io/en/latest/main/src/pad/README.html#place-io-terminals).",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514923478665400372",
      "type": "Default",
      "timestamp": "2026-06-12T09:25:03.231+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I had a similar issue with [HeiChips](https://github.com/FPGA-Research/heichips25-tapeout): in IHP, the bondpads are separate from the I/O cells and [place_bondpad](https://openroad.readthedocs.io/en/latest/main/src/pad/README.html#place-wirebond-pads) also makes the pin SPECIAL. My solution (workaround) was to edit the LEF to add a second port for the core-facing pin of the I/O cell.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514923683280322560",
      "type": "Default",
      "timestamp": "2026-06-12T09:25:52.015+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "afaik sky130 doesn't have this issue since the I/O cells have separate ports for bondpad and core side.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514923920610955364",
      "type": "Default",
      "timestamp": "2026-06-12T09:26:48.599+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I noticed that SPECIAL appeared in the def on the OpenROAD.PadRing step, and suspected that might be the reason the router ignored it",
      "author": {
        "id": "691780627338625077",
        "name": "rebelmike",
        "discriminator": "0000",
        "nickname": "RebelMike",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC4D",
            "code": "thumbsup",
            "isAnimated": false,
            "imageUrl": "2026-06_media/1f44d-27259.svg"
          },
          "count": 1,
          "users": [
            {
              "id": "323371864074485771",
              "name": "mole99",
              "discriminator": "0000",
              "nickname": "Leo Moser (mole99)",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
            }
          ]
        }
      ],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514924100047470736",
      "type": "Default",
      "timestamp": "2026-06-12T09:27:31.38+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "But couldn't work out where that was coming from (or even if it was sensible to try and avoid it!)",
      "author": {
        "id": "691780627338625077",
        "name": "rebelmike",
        "discriminator": "0000",
        "nickname": "RebelMike",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514924542030512128",
      "type": "Default",
      "timestamp": "2026-06-12T09:29:16.757+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "iirc @tnt recently found a workaround that doesn't require to edit the LEF file? It involves placing a macro with two ports, which is essentially just a short, next to the core-facing pin of the I/O cell.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "596068704471482370",
          "name": "246tnt",
          "discriminator": "0000",
          "nickname": "tnt",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-06_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1514924914602283099",
      "type": "Default",
      "timestamp": "2026-06-12T09:30:45.585+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "However, Tholin's solution is also fine.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514926199514730648",
      "type": "Default",
      "timestamp": "2026-06-12T09:35:51.932+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Yesh, I putting a small macro doing the split connection which works better for me than editing the pads in the PDK :\n* No need for modifying PDK\n* Because the short is in a separate block with just that in it, it actually doesn't mess with full LVS/GDS check, both the \"schematic\" and \"layout\" side of that block will have a single 0R resistor in them, no ambiguity.\n* That also allowed me to connect all the split `Metal2` traces on the core side, join them together for better connection and bring them to `Metal3` where I needed them, avoiding me to have to deal with via at all when routing them \uD83D\uDE05",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514926845458387087",
      "type": "Default",
      "timestamp": "2026-06-12T09:38:25.937+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Ends up looking like this :",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [
        {
          "id": "1514926845169111050",
          "url": "2026-06_media/2026-06-12_224x778_scrot-9021C.png",
          "fileName": "2026-06-12_224x778_scrot.png",
          "fileSizeBytes": 3356
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514927236032237628",
      "type": "Default",
      "timestamp": "2026-06-12T09:39:59.057+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Cool, that sounds like a good solution.  I assume I can find that in the TT gf0p3 project?",
      "author": {
        "id": "691780627338625077",
        "name": "rebelmike",
        "discriminator": "0000",
        "nickname": "RebelMike",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514927259918798940",
      "type": "Default",
      "timestamp": "2026-06-12T09:40:04.752+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "But the routing is still done manually though ODB scripts, I don't leave it up to the auto-router.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514927413988032533",
      "type": "Default",
      "timestamp": "2026-06-12T09:40:41.485+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "You can't find it anywhere, that's WIP which is not pushed publically anywhere yet.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1514927824119533608",
      "type": "Default",
      "timestamp": "2026-06-12T09:42:19.268+00:00",
      "timestampEdited": "2026-06-12T09:42:26.39+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "But the macro is 2 squares of metal with via between them \uD83D\uDE05  just positioned right where it needs to be.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC4D",
            "code": "thumbsup",
            "isAnimated": false,
            "imageUrl": "2026-06_media/1f44d-27259.svg"
          },
          "count": 1,
          "users": [
            {
              "id": "691780627338625077",
              "name": "rebelmike",
              "discriminator": "0000",
              "nickname": "RebelMike",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
            }
          ]
        }
      ],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE05",
          "code": "sweat_smile",
          "isAnimated": false,
          "imageUrl": "2026-06_media/1f605-42B43.svg"
        }
      ]
    },
    {
      "id": "1514928573998174288",
      "type": "Default",
      "timestamp": "2026-06-12T09:45:18.053+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "And *if* you want to leave it up to the auto-router, you can now add NDRs directly via the LibreLane config \uD83D\uDE09 \n\nhttps://github.com/FPGA-Research/heichips25-tapeout/blob/d555bbc58aad6cc54e0bc9ce81b75936db2df0d8/librelane/config.yaml#L253",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC40",
            "code": "eyes",
            "isAnimated": false,
            "imageUrl": "2026-06_media/1f440-6C64D.svg"
          },
          "count": 1,
          "users": [
            {
              "id": "691780627338625077",
              "name": "rebelmike",
              "discriminator": "0000",
              "nickname": "RebelMike",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
            }
          ]
        }
      ],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE09",
          "code": "wink",
          "isAnimated": false,
          "imageUrl": "2026-06_media/1f609-9EC67.svg"
        }
      ]
    },
    {
      "id": "1515106828151820589",
      "type": "Default",
      "timestamp": "2026-06-12T21:33:37.155+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Thanks all, I’ve got tnt’s solution working and it’s building with no errors \uD83D\uDE42",
      "author": {
        "id": "691780627338625077",
        "name": "rebelmike",
        "discriminator": "0000",
        "nickname": "RebelMike",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/49aaff687e56f04e7bbdedf0077bab75-7DDB4.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [
        {
          "emoji": {
            "id": "",
            "name": "\uD83D\uDC4D",
            "code": "thumbsup",
            "isAnimated": false,
            "imageUrl": "2026-06_media/1f44d-27259.svg"
          },
          "count": 1,
          "users": [
            {
              "id": "492702620759228416",
              "name": "mattvenn",
              "discriminator": "0000",
              "nickname": "Matt Venn",
              "color": null,
              "isBot": false,
              "avatarUrl": "2026-06_media/aa8560ba40f1f3d339d044dee6970630-97A62.png"
            }
          ]
        }
      ],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE42",
          "code": "slight_smile",
          "isAnimated": false,
          "imageUrl": "2026-06_media/1f642-83E8A.svg"
        }
      ]
    },
    {
      "id": "1517258713147379743",
      "type": "Reply",
      "timestamp": "2026-06-18T20:04:26.518+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "If that tooling _looked_ like it could be convinced to route my differential pairs at least approximately like pairs, I'd actually have tried to let it do at least the R part of the PnR for all but the blue and red zone and probably even the P part up to just before the last latch before the MUX between green and blue. In part because _some_ of the early latches are wastefully duplicated between the two to three instances of the bottom section (wired like the top section suggests... except that I forgot to draw a latch pair instead of just a single latch in the top section wherever I drew one; they are both to be preceded by an opposite-phase latch to make the entire green section take inputs all at the nicely same clock.\n\n(Damn, upon further review, I'm annoyingly less confident about the exact nominal bit ordering on the serial side of the MUX structure...)",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-06_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [
        {
          "id": "1517258712769757264",
          "url": "2026-06_media/mux_tree-C4_for_FIR-89B59.png",
          "fileName": "mux_tree-C4_for_FIR.png",
          "fileSizeBytes": 296824
        }
      ],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "323371864074485771",
          "name": "mole99",
          "discriminator": "0000",
          "nickname": "Leo Moser (mole99)",
          "color": null,
          "isBot": false,
          "roles": [
            {
              "id": "1423020172595298314",
              "name": "Mod",
              "color": null,
              "position": 4
            }
          ],
          "avatarUrl": "2026-06_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
        }
      ],
      "reference": {
        "messageId": "1514928573998174288",
        "channelId": "1514919594467393626",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    }
  ],
  "messageCount": 26
}